package com.shuma.upms.user.util;

/**
 * 使用 ThreadLocal 为每个请求线程存储私有的用户信息
 */
public class UserContextHolder {

    // 创建一个 ThreadLocal 变量，用于存储用户ID
    private static final ThreadLocal<Long> userIdThreadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的用户ID
     * @param userId 用户ID
     */
    public static void setUserId(Long userId) {
        userIdThreadLocal.set(userId);
    }

    /**
     * 获取当前线程的用户ID
     * @return 用户ID，如果未设置则返回 null
     */
    public static Long getUserId() {
        return userIdThreadLocal.get();
    }

    /**
     * 清理当前线程的用户信息
     * 必须在请求处理完成后调用，以防内存泄漏
     */
    public static void remove() {
        userIdThreadLocal.remove();
    }
}